package com.alogic.cron;

import com.anysoft.util.*;
import org.w3c.dom.Element;

import java.util.Map;

/**
 * 定时匹配器
 *
 * @since 1.6.13.7 [20200720 duanyy] <br>
 *
 */
public interface CronMatcher extends Configurable, XMLConfigurable, Reportable {
    /**
     * 是否匹配
     * @param lastDate 上次执行时间
     * @param now 当前时间
     * @return true|false
     */
    boolean match(long lastDate, long now);

    /**
     *  虚基类
     */
    public abstract static class Abstract implements CronMatcher{

        public void configure(Element _e, Properties _properties) {
            Properties p = new XmlElementProperties(_e,_properties);
            configure(p);
        }

        public void report(Element xml) {
            if (xml != null){
                xml.setAttribute("module", getClass().getName());
            }
        }

        public void report(Map<String, Object> json) {
            if (json != null){
                json.put("module", getClass().getName());
            }
        }
    }
}
